package pacoteDao;

import java.sql.*;
import java.util.*;
import projetofinal.Aluno;
import projetofinal.ConnectionFactory;

public class AlunoDAO {

    private ConnectionFactory conexao = new ConnectionFactory();
    private Connection connection;
    String query;

    public AlunoDAO() throws SQLException {
        if (connection == null || connection.isClosed()) {
            this.connection = conexao.getConnection();
        }
    }

    public boolean insert(Aluno aluno) throws SQLException {

        query = "insert into Aluno(id,matricula,nome,cpf,rg,idade,dtnasc,telefone,idserie) values (" + aluno.getId() + ",'" + aluno.getMatricula() + "','" + aluno.getNome() + "','" + aluno.getCpf() + "','" + aluno.getRg() + "'," + aluno.getIdade() + ",'" + aluno.getDtnasc() + "','" + aluno.getTelefone() + "'," + aluno.getIdserie() + ")";
        Integer linha = conexao.executarNoQuery(query);

        conexao.close();
        return linha > 0;

    }

    public boolean update(Aluno aluno) throws SQLException {

        query = "update Aluno set matricula = '" + aluno.getMatricula() + "', nome = '" + aluno.getNome() + "', cpf = '" + aluno.getCpf() + "', rg = '" + aluno.getRg() + "', idade = " + aluno.getIdade() + ", dtnasc = '" + aluno.getDtnasc() + "', telefone = '" + aluno.getTelefone() + "', idserie = " + aluno.getIdserie() + " where id = " + aluno.getId();
        Integer linha = conexao.executarNoQuery(query);

        conexao.close();
        return linha > 0;

    }

    public boolean delete(Aluno aluno) throws SQLException {

        query = "delete from Aluno where id = " + aluno.getId();
        int linhas = conexao.executarNoQuery(query);

        conexao.close();
        return linhas > 0;

    }

    public List<Aluno> consultar() throws SQLException {

        query = "select * from Aluno ";
        ResultSet rset = conexao.executar(query);

        List<Aluno> alunos = alunos = new ArrayList<Aluno>();

        while (rset.next()) {
            Aluno aluno = new Aluno();
            aluno.setId(rset.getInt(1));
            aluno.setMatricula(rset.getString(2));
            aluno.setNome(rset.getString(3));
            aluno.setCpf(rset.getString(4));
            aluno.setRg(rset.getString(5));
            aluno.setIdade(rset.getInt(6));
            aluno.setDtnasc(rset.getString(7));
            aluno.setTelefone(rset.getString(8));
            aluno.setIdserie(rset.getInt(9));
            alunos.add(aluno);
        }

        conexao.close();
        return alunos;

    }

    public Aluno consultaNome(String nome) throws SQLException {

        query = "select * from Aluno where nome = '" + nome + "'";
        ResultSet rs = conexao.executar(query);

        Aluno aluno = null;
        if (rs.next()) {
            aluno = new Aluno();
            aluno.setId(rs.getInt(1));
            aluno.setMatricula(rs.getString(2));
            aluno.setNome(rs.getString(3));
            aluno.setCpf(rs.getString(4));
            aluno.setRg(rs.getString(5));
            aluno.setIdade(rs.getInt(6));
            aluno.setDtnasc(rs.getString(7));
            aluno.setDdd(rs.getString(8));
            aluno.setTelefone(rs.getString(9));
            aluno.setIdserie(rs.getInt(10));
        }

        conexao.close();
        return aluno;

    }

    public Aluno getById(Integer id) throws SQLException {

        query = "select * from Aluno where id = " + id;
        ResultSet rs = conexao.executar(query);

        Aluno aluno = null;
        if (rs.next()) {
            aluno = new Aluno();
            aluno.setId(rs.getInt(1));
            aluno.setMatricula(rs.getString(2));
            aluno.setNome(rs.getString(3));
            aluno.setCpf(rs.getString(4));
            aluno.setRg(rs.getString(5));
            aluno.setIdade(rs.getInt(6));
            aluno.setDtnasc(rs.getString(7));
            aluno.setDdd(rs.getString(8));
            aluno.setTelefone(rs.getString(9));
            aluno.setIdserie(rs.getInt(10));
        }

        conexao.close();
        return aluno;

    }
}
